<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        console.log(100 + "200");

        // 包含了隐式转换
        // 把 数字 100 转换成了 字符串 "100"
        // 结果就变成了 "100200"
        console.log(100 - "200");
        // 把 字符 "200" 转换成了数字 100
        // 结果就变成了 -100
        // 五种基本类型转换的形态
        // 字符串 数字 布尔值 undefined null 

        // 转换成数字类型的情况 Number()可以将括号内部的数据转换成数字类型的数据
        console.log(Number("100"));//将全是数字的字符转换成数字 100
        console.log(Number("100px"));//不全是数字的字符转换成数字NaN
        console.log(Number(undefined));//转换成数字 无法计算 NaN
        console.log("   ");//转换成数字 0
        console.log("");//转换成数字 0
        console.log(Number());//转换成数字 0
        console.log(Number(null));//转换成 数字  0
        // 布尔值
        console.log(Number(false));//转换成数字 0
        console.log(Number(true));//转换成数字  1



        console.log("进行算数运算时会把不是数字类型的数据转换成数字进行运算");
        // 进行算数运算时会把不是数字类型的数据转换成数字进行运算




        // 二: 隐式转换成字符串的情况
        // String()可以实现将括号里边的数据  转换成字符串类型 (隐式转换采用该规则)
        // 规律: 带上引号
        console.log(String(true));
        console.log(String(false));
        console.log(String(123.3)); //'123.3'
        console.log(String(undefined)); // 'undefined'
        console.log(String(null)); //'null'

        //   特殊情况当有字符串参加的加法运算时会把 其他数据变为字符串
        console.log("特殊情况当有字符串参加的加法运算时会把 其他数据变为字符串");
        console.log(100 + "200");
        // 隐式转换成布尔值
        // Boolean()可以实现将括号里边的数据  转换成布尔类型

        // 除了以下五种情况之外全是 true
        console.log(Boolean(NaN));
        console.log(Boolean(0));
        console.log(Boolean(undefined));
        console.log(Boolean(null));
        console.log(Boolean(""));

        console.log(Boolean("11"));

    </script>
</body>

</html>